package dp2.tablet.proyecto.gestores;

import java.util.ArrayList;
import java.util.List;

import dp2.tablet.proyecto.bean.UsuarioBean;


import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;


public class GestorUsuarios extends SQLiteOpenHelper {
	// All Static variables
	// Database Version
	private static final int DATABASE_VERSION = 1;

	// Database Name
	private static final String DATABASE_NAME = "Tablet";

	// Usuario table name
	private static final String TABLE_USUARIO = "Usuario";

	// Usuario Table Columns names
	private static final String KEY_IdUsuario = "IdUsuario";
	private static final String KEY_Contrasenha = "Contraseña";

	public GestorUsuarios(Context context) {
		super(context, DATABASE_NAME, null, DATABASE_VERSION);
		crear();
	}

	// Creating Tables
	@Override
	public void onCreate(SQLiteDatabase db) {		
		String CREATE_USUARIO_TABLE = "CREATE TABLE " + TABLE_USUARIO + "("
				+ KEY_IdUsuario + " TEXT PRIMARY KEY," + KEY_Contrasenha +" TEXT)";
		db.execSQL(CREATE_USUARIO_TABLE);
	}
	public void crear() {
		SQLiteDatabase db = this.getWritableDatabase();
		db.execSQL("DROP TABLE IF EXISTS " + TABLE_USUARIO);
		onCreate(db);
		db.close();
	}

	// Upgrading database
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// Drop older table if existed
		db.execSQL("DROP TABLE IF EXISTS " + TABLE_USUARIO);

		// Create tables again
		onCreate(db);
	}

	/**
	 * All CRUD(Create, Read, Update, Delete) Operations
	 */

	// Adding new tipoEvento
	public void addUsuario(UsuarioBean usuario) {
		SQLiteDatabase db = this.getWritableDatabase();

		ContentValues values = new ContentValues();
		values.put(KEY_Contrasenha, usuario.getContrasenha()); 
		values.put(KEY_IdUsuario, usuario.getId());
		
		// Inserting Row
		db.insert(TABLE_USUARIO, null, values);
		db.close(); // Closing database connection
	}

	// Getting single tipoEvento
	public UsuarioBean getUsuario(String strIdUsuario) {
		SQLiteDatabase db = this.getReadableDatabase();

		Cursor cursor = db.query(TABLE_USUARIO, new String[] { KEY_IdUsuario,
				KEY_Contrasenha }, KEY_IdUsuario + "=?",
				new String[] { String.valueOf(strIdUsuario) }, null, null, null, null);
		UsuarioBean objUsuario=null;
		if (cursor.getCount()>0){
			cursor.moveToFirst();
			//objUsuario = new UsuarioBean(cursor.getString(0),cursor.getString(1));

		}		
		db.close();
		return objUsuario;
	}
	
	// Getting All tipoEvento
	public List<UsuarioBean> getAllUsuario() {
		List<UsuarioBean> lstUsuarios = new ArrayList<UsuarioBean>();
		// Select All Query
		String selectQuery = "SELECT  * FROM " + TABLE_USUARIO;

		SQLiteDatabase db = this.getWritableDatabase();
		Cursor cursor = db.rawQuery(selectQuery, null);

		// looping through all rows and adding to list
		if (cursor.moveToFirst()) {
			do {
				//UsuarioBean objUsuario = new UsuarioBean(cursor.getString(0),cursor.getString(1));
				// Adding tipoEvento to list
				//lstUsuarios.add(objUsuario);
			} while (cursor.moveToNext());
		}

		// return tipoEvento list
		return lstUsuarios;
	}

	// Updating single tipoEvento
	public int updateUsuario(UsuarioBean objUsuario) {
		SQLiteDatabase db = this.getWritableDatabase();

		ContentValues values = new ContentValues();
		values.put(KEY_IdUsuario, objUsuario.getId());

		// updating row
		return db.update(TABLE_USUARIO, values, KEY_IdUsuario + " = ?",
				new String[] { String.valueOf(objUsuario.getId())});
	}

	// Deleting single tipoEvento
	public void deleteUsuario(UsuarioBean objUsuario) {
		SQLiteDatabase db = this.getWritableDatabase();
		db.delete(TABLE_USUARIO, KEY_IdUsuario + " = ?",
				new String[] { String.valueOf(objUsuario.getId()) });
		db.close();
	}


	// Getting tipoEvento Count
	public int getUsuarioCount() {
		String countQuery = "SELECT  * FROM " + TABLE_USUARIO;
		SQLiteDatabase db = this.getReadableDatabase();
		Cursor cursor = db.rawQuery(countQuery, null);
		cursor.close();

		// return count
		return cursor.getCount();
	}
}
